package com.nowcoder.community.config;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * @BelongsProject: community
 * @BelongsPackage: com.nowcoder.community.config
 * @Author: Master_XXJS
 * @CreateTime: 2022-09-21  16:00
 * @Description: TODO 进行验证码得图片生成
 * @Version: 1.0
 */
@Configuration
public class KaptchaConfig {

    @Bean
    public Producer kaptchaProducer(){
        //设置 kaptcha 需要的属性参数 properties
        Properties properties = new Properties();
        properties.setProperty("kaptcha.image.width","100");  //设置验证码图片为 100 宽
        properties.setProperty("kaptcha.image.height","40");  //设置验证码图片为 40 高
        // textporducer 是设置的 图片里面显示的 文本
        properties.setProperty("kaptcha.textproducer.font.size","32");  //设置验证码图片的 字体 32大小
        properties.setProperty("kaptcha.textproducer.font.color","0,0,0");  //设置验证码图片的 字体 颜色，RGB
        properties.setProperty("kaptcha.textproducer.char.string","0123456789ABCDEFGHIJKLMNOPQRSTUVWSYZ");  //设置验证码图片的 词库
        properties.setProperty("kaptcha.textproducer.char.length","4");  //设置验证码图片的 文本的长度
        // noise 设置噪音，也就是字体模糊扭曲程度，避免被机器识别
        properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");  //设置验证码图片的文本的噪音


        //创建一个 默认的kaptcha 的类
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        //创建一个 kaptcha 的设置属性的类，需要参数 properties
        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }
}

